<?php

/**
 * UserIdentity represents the data needed to identity a user.
 * It contains the authentication method that checks if the provided
 * data can identity the user.
 */
class UserIdentity extends CUserIdentity
{
	/**
	 * Authenticates a user.
	 * The example implementation makes sure if the username and password
	 * are both 'demo'.
	 * In practical applications, this should be changed to authenticate
	 * against some persistent user identity storage (e.g. database).
	 * @return boolean whether authentication succeeds.
	 */
	private $_id;
	const ERROR_USER_BLOCKED = 4;

	public function authenticate()
	{
		$user = User::model()->find("name like '{$this->username}'");
		if (!$user) {
			$this->errorCode=self::ERROR_USERNAME_INVALID;
		} elseif ($user -> blocked) {
         	$this->errorCode=self::ERROR_USER_BLOCKED;
      	} elseif ($user -> password !== crypt($this -> password, $user -> password)) {
      		$this->errorCode=self::ERROR_PASSWORD_INVALID;
      	} else {
      		$this -> _id = $user -> id;
      		//$this -> setState('title', $user -> title);
      		$this -> errorCode = self::ERROR_NONE;
      	}

		return !$this -> errorCode;
	}


	public function getId()	{
		return $this->_id;
	}
}